فصل اول مروری بر مدیریت بانک اطالعاتی 1
1-1 (مقدمه سیستم بانک اطالعاتی یا پایگاه داده ) Base ( Data به طور عمومی یک سیستم کامپیوتری نگهداری رکوردها می باشد. به عبارت دیگر بانک اطالعاتی یک مجموعه از فایل های داده کامپیوتری می باشد که این فایل ها را اغلب جدول می نامند و سطرهای این جدول رکوردهای فایل و ستون های جدول به عنوان فیلدهای آن رکوردها در نظر گرفته می شود. سیستم بانک اطالعاتی می تواند عملیات افزودن) Insert ( بازیابی )Select( ویرایش) ( و حذف Update )Delete( داده ها و فایل ها )جداول(را توسط کاربران انجام دهد. شکل) 1-1( جدول پروازهای خطوط هوایی را نشان می دهد. Attribute property فیلد جدول (Table) Air# Date Time Source Distination Type Service Ticket Price Shiraz A120 02.12.02 23:00 Msh C5 551 100.000 رکورد Row کلید اصلی B452 13.09.12 04:15 Teh C2 531 150.000 Data شکل) 1-1( جدول پروازهای خطوط هوایی 2
) 1-2 سیستم بانک اطالعاتی )DBS( سیستم بانک اطالعاتی یا Database System یک سیستم کامپیوتری برای نگهداری رکوردها است. به عبارتی دیگر یک سیستم کامپیوتری شده که هدف اصلی آن ذخیره اطالعات وفراهم نمودن امکاناتی برای بازیابی وبه هنگام رسانی این اطالعات برای کاربران می باشد. ) ( نرم افزار) Software Data ) مطابق شکل) 1-2 ( سیستم بانک اطالعاتی از چهار عنصر اصلی داده ها سخت افزار )Hardware( و کاربران )User( تشکیل شده است. Application DBMS Programs End-User Tables End-User DBP DBA شکل) 1-2 ( اجزای سیستم بانک اطالعاتی 3
1-2-1. داده هرچیزی که برای یک فرد یا سازمان با ارزش باشد داده در نظر می گردد. بر اساس کاربران سیستم ها یا تک کاربره User( )Single یا چند کاربره ( User )Multi هستند. سیستم تک کاربره سیستمی است که در هر لحظه فقط یک نفر می تواند از بانک اطالعاتی استفاده کند ولی در سیستم چند کاربره در هر لحظه چند نفر می توانند از بانک اطالعاتی استفاده نمایند. هدف اصلی سیستم های چند کاربره این است که به کاربر اجازه دهد از آن به عنوان یک سیستم تک کاربره استفاده نماید. به طور کلی داده ها در بانک اطالعاتی بخصوص در سیستم های بزرگ هم به صورت مجتمع و هم به صورت اشتراکی هستند) Sharing Integration (که & در ادامه توصیف می شوند : جامعیت :)Integration( در دیدگاه مبتنی بر جامعیت از بین آنها حذف شده است. بانک اطالعاتی مجموعه ای از فایل های مجزا است که بخشی از اطالعات اضافی ازدیدگاه های دیگر جامعیت به معنای صحت داده ها پردازش ها و پیروی از مقررات سیستم می باشد. بعنوان مثال موجودی واقعی حساب های بانکی نباید منفی باشد و یا شخص نتواند بیش از موجودی خود از حسابش برداشت کند.از دیدگاه های دیگر نوعی جامعیت به نام همخوانی) Consistency ( مرسوم است و به معنای این است که اقالم داده در کل سیستم با هم در تضاد نباشد. بعنوان مثال در نسخه ای از پرونده بانک موجودی شخص با نسخه دیگر پرونده که معادل آن است متفاوت نباشد. اشتراک) Sharing ( : داده های موجود در بانک اطالعاتی می توانند بین کاربران مختلف به اشتراک گذاشته شوند و کاربران 4
. قادرند عملیات مختلفی را روی آنها انجام دهند واضح است که اشتراک حاصل از جامعیت می باشد. با جامعیت بخشیدن به داده ها می توان از داده ها اشتراکی بطوری استفاده کرد که در بانک اطالعاتی مشکلی پدید نیاید. هر کاربرفقط بخشی از داده ها ی بانک اطالعاتی را مورد استفاده قرار می دهد و توسط دیدگاه های مختلفی با بانک اطالعاتی. در تعامل است اگر بانک اطالعاتی مشترک نباشد بانک اطالعاتی شخصی یا کاربر ویژه نامیده می شود.. 1-2-2 نرم افزار )Software( سه نوع نرم افزار رایج در بانکهای اطالعاتی مورد استفاده قرار میگیرند و عبارتند از : سیستم عامل. سیستم مدیریت بانک اطالعاتی برنامه های کاربردی و سیستم مدیریت بانک )Windows,Linux, ( )Data Base Managernent System( یا اطالعاتی DBMS الیه ای از نرم افزار بین داده ها ی فیزیکی ذخیره شده و کاربران سیستم می باشد کارگزار بانک اطالعاتی ( Server Database که به آن (گفته می شود. تمام تقاضاهای دسترسی به بانک اطالعاتی شامل : بازیابی حذف درج و بروز رسانی توسط سیستم مدیریت بانک اطالعاتی پردازش می شوند. همچنین سیستم مدیریت بانک اطالعاتی از کاربران در مواجه شدن با جزئیات سطح سخت افزاری حمایت می کند. DB2 Oracle SQL و Informix از سیستم مدیریت بانک اطالعاتی رایج و مشهور به شمار میروند. بطور کلی انواع سیستم مدیریت بانک اطالعاتی عبارتند از تراکنش گر )Transactional( و تصمیم گیرنده Supply( )Decision. همانند بروزرسانی موجودی کاال که یک تراکنش است و گزارش آماری برای کمک به امر تصمیم گیری توسط مدیران استراتژیک سطح باال. از نرم افزارهای دیگر قابل استفاده در سیستم مدیریت 5
Host Language بانک اطالعاتی می توان به مدیر تراکنش برنامه های کمکی توسط )می توان از Interface ایجاد شده توسط HL نیز استفاده نمود.( و گزارشات ضروری و الزم در سیستم بانک اطالعاتی.. 1-2-3 سخت افزار )Hardware( سخت افزار در یک بانک اطالعاتی می تواند شامل قطعات زیر باشد : قطعات سخت افزاری سیستم بانک اطالعاتی متشکل از : حافظه های جانبی پردازنده ها Server و.... شبکه و توپولوژی آن نحوه اتصاالت و ارتباطات. منابع( Resource ( مورد استفاده در شبکه مانند Barcode reader Printer Scanner و..... 1-2-4 کاربران )Users( کاربرانی که با بانک اطالعاتی در تعامل می باشند را می توان به سه دسته کلی تقسیم نمود : الف ) برنامه نویسان کاربردی Programmers( )Data Base مسئول نوشتن برنامه های کاربردی مورد نیاز یک بانک اطالعاتی می باشند. مانند روال) Procedure ( بروزرسانی موجودی کاالهای یک انبار پس از خارج کردن کاالها از انبار.هدف این برنامه ها این است که کاربر بتواند از یک ایستگاه کاری یا ترمینال به بانک اطالعاتی دسترسی پیدا کند و برنامه های کاربردی از نوع پیوسته) Online ( یا دسته ای )Batch( یا درون خطی )Offline( را اجرا نماید. این برنامه ها با زبان های برنامه نویسی مثل Oracle SQL Java C++ PL1 Cobol VB Delphi )زبان های نسل چهارم( پیاده سازی می شود. 6
ب ) کاربران نهایی User( )End از طریق ایستگاه های کاری یا ترمینال های متصل به بانک اطالعاتی دسترسی دارند.در حقیقت یک کاربر نهایی از طریق واسط کاربر) Interface )User با بانک اطالعاتی در تعامل است و از طریق یکی از برنامه های کاربردی درون خطی و یا رابطی که به عنوان بخش داخلی نرم افزار سیستم بانک اطالعاتی فراهم می شود)مانند )SQL قادر است به بانک اطالعاتی دسترسی داشته باشد. ج ) مدیر بانک اطالعاتی Adminstrator( )Data Base وظیفه مدیر داده ها یا Data )این Adminstrator)DA است که تصمیم بگیرد در مرحله اول چه داده هایی باید در بانک اطالعاتی ذخیره شوند و سپس سیاست های الزم جهت نگهداری و کار با داده ها را تعیین کند. یکی از این خط مشی ها می تواند تعیین این مسئله باشد که چه کسی چه اعمالی را روی چه داده هایی و تحت چه شرایطی انجام دهد. دارد. مدیر داده ها در واقع مسئولیت کنترل مرکزی داده ها و سیاست امنیت را بر عهده مدیر بانک اطالعاتی یا Data )مسئول Base Administrator)DBA پیاده سازی تصمیمات مدیر داده است. وظیفه مدیر بانک اطالعاتی ایجاد بانک اطالعاتی واقعی و پیاده سازی کنترل های مورد نیاز جهت اعمال خط مشی های مدیر داده ها و همچنین ایجاد امنیت بر روی داده ها و عملیات می باشد. 1-3. بانک اطالعاتی بانک اطالعاتی شامل اطالعاتی در قالب فیلدهایی متعلق به رکوردهای موجودیت های سیستم بانک اطالعاتی است.حاالت نمایش فیلدهای ذخیره شده در بانک اطالعاتی عبارتند از : داده های عددی : استفاده از مبنای مناسب مانند: دودویی دهدهی و ممیز شناور. 7
داده های کاراکتری : استفاده از روشهای کدگذاری مختلف همانند ASCII وUnicode. واحدهای داده ای عددی : همانند سانتی متر و کیلوگرم برای طول و وزن. کدگذاری داده ها : برای داده های مجموعه ای همانند فصول سال ماه های سال و نوع سرویس های خدماتی. داده های بانک اطالعاتی پایدار است چون وقتی داده ها توسط سیستم مدیریت بانک اطالعاتی برای ورود به بانک اطالعاتی پذیرفته شد فقط در صورتی می تواند حذف شود که درخواستی به سیستم مدیریت بانک اطالعاتی ارسال شود و با اثرات جانبی اجرای برنامه حذف نخواهد شد. پس یک تعریف از بانک اطالعاتی می تواند به صورت زیر باشد. مجموعه ای از داده های پایدار Data( )Persistent که توسط برنامه های کاربردی در بعضی از مو سسات همانند بیمارستان )داده های بیماران( بانک )داده های حسابداری( استفاده قرار می گیرند. و دانشگاه )داده های دانشجویان( مورد بانک های اطالعاتی در حال حاضر در کاربردهای پشتیبانی تصمیم گیری ( Support Decision System (مورداستفاده قرارمی گیرند. یعنی دارای دوبانک اطالعاتی مجزا هستیم که یکی حاوی داده های عملیاتی می باشد و دیگری انبار داده ها) Warehouse )Data نامیده می شود.انبار داده ها حاوی اطالعات خالصه )همانند و مجموع میانگین ها(می باشد به نحوی که اطالعات خالصه به نوبه خود به صورت دوره ای )مثال یک بار در روز (از بانک اطالعاتی گرفته می شود. امنیت امور مربوط به محافظت داده ها در برابر خطرات مانند آتش سوزی خرابی امنیت) Security ( : Server و جلوگیری از دستیابی غیر مجاز کاربران به بانک اطالعاتی می باشد. استفاده ازرمز) Password ( و 8
تغییر اقالم داده با الگوریتم های خاص از روشهای متداول برای جلوگیری از دستیابی غیر مجاز به داده ها می باشند. انواع بانک های اطالعاتی بطور کلی طبقه بندی زیر را می توان برای بانکهای اطالعاتی در نظر گرفت. : تعداد مجاز و محدودی کاربر برای استفاده همزمان با بانک اطالعاتی در نظر گرفته Workgroup DB -1 می شود )کمتر از 05 نفر(. 2- DB : Enterprise کل بخشهای یک سازمان بطور همزمان از بانک اطالعاتی اسنتفاده می کنند. 3- DB : Centralized داده ها روی یک Server )یک )DBMS در حالت متمرکز ذخیره سازی می شوند. : داده ها روی چند server )چند )DBMS در حالت توزیع شده ذخیره سازی می Distributed DB -4 شوند. 1-4 د. یاگرام موجودیت رابطه یا (Entity- Relation Diagram) ERD هر شیء قابل تشخیصی که در یک بانک اطالعاتی قابل ارائه باشد و در مورد آن اطالعاتی )صفات موجودیتها(. وجود داشته باشد را موجودیت یا نهاد Entity( ) می گویند ارتباط بین موجودیت ها را رابطه )Relation( می گویند. هر رابطه دارای درجه) Degree ( است و درجه هر رابطه برابر است با مجموع تعداد موجودیت های مرتبط به آن رابطه. در دیاگرام موجودیت -رابطه معموال رابطه ها حداکثر درجه 3 می باشد. 9
شکل ) 1-3 (بخشی از دیاگرام موجودیت گذارد. رابطه از بانک اطالعاتی یک سیستم انتخاب واحد را به نمایش می رابطه انتخاب واحد Registration موجودیت درس Course موجودیت دانشجو Student شکل (1-3) یک دیاگرام موجودیت رابطه ساده از بانک اطالعاتی سیستم انتخاب واحد نهاد قوی ( Entity :) strong موجودیتی است که وجودش مستقل از وجود موجودیتهای دیگر می باشد. نهاد ضعیف ( Entity ) Weak :. موجودیتی است که وجودش وابسته به نهاد دیگری باشد مطابق شکل )1-4( نهاد خانواده) Family ( یک نهاد ضعیف می باشد.شکل )1-4( وجود یک نهاد و رابطه ضعیف را نشان میدهد. نهاد ضعیف نهاد قوی موجودیت دانشجو Student موجودیت خانواده Family رابطه ضعیف Fund رابطه کمک هزینه شکل )1-4( : یک دیاگرام موجودیت رابطه شامل نهاد ضعیف 10
1-4-1( صفات یا خواص موجودیت : خصوصیت بارز هر شی ء را صفت) Attribute ( می گویند. شکل )1-5( صفات مختلفی از موجودیت ها را در یک دیاگرام موجودیت رابطه نشان می دهد. بطور کلی صفات را می توان به گونه های زیر طبقه بندی نمود : :) Atomic اتمیک ( صفتی است که تجزیه پذیر نباشد همانند اعداد و رشته های کاراکتری استفاده شده در معدل دانشجو و نام خانوادگی. صفت مرکب Attribute( :)Complex صفت مرکب تجزیه پذیر است همانند یک رکورد داده. در مدل دیاگرام موجودیت رابطه های توسعه یافته صفات مرکب جایی ندارند و باید نرمال شوند. بعنوان مثال نام و آدرس دانشجو صفات مرکب هستند که در زیر نشان داده شده است : دانشجو ( شماره دانشجویی نام ( نام نام خانوادگی ) آدرس ( پالک خیابان محله شهر )... ) : )Single Value Attribute( صفت تک مقداری صفت تک مقداری فقط یک مقدار می توانند داشته باشند. : ( Multi Value Attribute) صفت چند مقداری صفت چند مقداری چند مقدار می توانند داشته باشند. همانند مدرک تحصیلی ( یک شخص می تواند چند مدرک تحصیلی داشته باشد ). : ( Derived Attribute) صفت مشتق شده صفت مشتق شده از صفت دیگری بدست می آیند. مثل معدل که از نمرات و سن که از تاریخ تولد بدست می آید. در دیاگرام موجودیت رابطه این نوع صفات را با نقطه چین به نهاد وصل می کنیم. 11
کلیدهای اصلی Key( )Primary و کلیدهای خارجی Key( )Foreign از کلیدهای پرکاربرد در بانک های اطالعاتی رابطه ای می باشند که بایستی در نهادها و رابطه های دیاگرام موجودیت رابطه مشخص شوند. Multi value Attribute Fname Complex Attribute Education Complex Attribute Lname Name Brt_Date Primary Key Student dd mm yy ID-stud Entity Average Score Derived Attribute شکل )1-0( صفات مختلف موجودیت دانشجو ) 1-4-2 یک نمونه دیاگرام موجودیت رابطه مربوط به سیستم بانک اطالعاتی دانشگاه در شکل )1-6( چهار موجودیت قوی دانشجو گروه های آموزشی استاد درس و یک نهاد ضعیف خانواده و * همچنین چهار رابطه انتخاب واحد ارائه درس کمک هزینه و پیشنیاز با درجه های متفاوت نشان داده شده اند. Std#,Crs#,Lec#,Grp#.Fam# کلید های اصلی : صفات مرکب : صفت نام) Name (در موجودیت های دانشجو )Student( و استاد Lecturer( (. 12
صفت چند مقداری : صفت مدرک تحصیلی Education( (در موجودیت استاد Lecturer( (. نام خانوادگی Lname نام اول Fname شماره پرسنلی Lec# شماره دانشجویی Std# نام Name معدل Avg شماره گروه آموزشی Grp # Std # نمره Score شماره درس Crs # شماره گروه Grp # دانشجو Student گروه های آموزشی Group انتخاب واحد Registration Std # نیمسال تحصیلی Current Semester استاد کمک هزینه خانواده Family سن # Fam Avg شماره پرسنلی Lec # Lecturer نام Name حقوق Salary تاریخ تولد Brth - Date ارائه درس Present مدرک تحصیلی Education Grp # { Crs#, } Crs # { Crs#, } Crs # Fam # حقوق Salary شرایط Cond نام خانوادگی Lname نام اول Fname درس Course پیشنیاز Pre شماره درس Crs # نام Name تعداد واحد No-Credit شکل) 1-6 (: دیاگرام موجودیت رابطه مربوط به سیستم انتخاب واحد یک دانشگاه 13
در بعضی ازسیستم ها بعضی ازصفات بصورت مشترک توسط چندین موجودیت مورداستفاده قرار می گیرند. به این خاصیت وراثت) Inheritance ( می گویند. بعنوان مثال دانشجو استاد و کارمندان در سیستم دانشگاهی همه متعلق به کالس شخص یاانسان ( Person ) هستند که در شکل )1-7( نشان داده شده است : Birth-City محل تولد Lname نام خانوادگی Birth- Date تاریخ تولد Name Person نام شخص- انسان Fname نام اول International-Code کد ملی Address آدرس Age Street سن No Phone سمت Student دانشجو Lecturer استاد Employee کارمند Major رشته تحصیلی Std# شماره پرسنلی... Lec # شماره پرسنلی Salary حقوق... Emp# شماره پرسنلی Salary حقوق شکل) 1-7 ( : وراثت در موجودیت ها.... 14
) 1-4-3 حد و اتصال Connectivity( ) Cardinality &. در یک رابطه یک طرف رابطه حالت ضعیف دارد و دیگری قوی تر است به عبارتی دیگر تا نهاد قوی تر نباشد نهاد ضعیف تر نیز موجودیت پیدا نمی کند. مینیمم و ماکزیمم تعداد موجودیت های موجود در ارتباط با یک رابطه به ترتیب حد پایینی و حد باالیی ( a b (یک موجودیت می گویند. موجودیتهای دیاگرام موجودیت - رابطه می توانند ارتباطات یک به یک ) 1-1 ( یک به چند )N-1( و چند به چند) M-N (داشته باشند. شکل )1-8( اتصال وحد را در یک نمونه دیاگرام موجودیت - رابطه نشان می دهد. استاد Lecturer 1 اختصاص Allocation 1 1 کامپیوتر computer (0,10) 1 راهنمایی Supervisory N (0,1) دانشجو Student شکل )1-8( نمایش اتصال وحد در یک نمونه دیاگرام موجودیت رابطه subsection ( یک نمونه ERD مربوط به سیستم بانک اطالعاتی یک کارخانه تولیدی ) 1-4-4 :) 15
شکل )1-9( دیاگرام موجودیت - رابطه مربوط به سیستم بانک اطالعاتی یک کارخانه تولیدی را نمایش میدهد. این کارخانه دارای موجودیت های زیر می باشد : انبارها) Warehouse ( عرضه کارمندان )Employee( محصوالت ( )Product مواد اولیه : ( )Part کنندگان ( )Supplier. رابطه را می توان بعنوان یک نهاد در نظر گرفت. داده های پایدار داده هایی هستند که کمتر دستکاری می User شوند و امکان حذف ندارند. داده های پایدار در موجودیت ها و رابطه ها نگهداری می شوند تا با سطح پایین برای بروز رسانی آنها دسترسی نداشته باشد. 16
Supplier City Parts عرضه کننده شهر قطعات Supplier - id (p.k) City-Code Part id (p.k) کد قطعات Sname Status City-Code Country Distance Service Tax Prtname نام قطعه Color رنگ قطعه Weight وزن قطعه City-Code کد شهر Price قیمت قطعه کد شهر کشور فاصله تا پایتخت سرویسهای خدماتی مالیات مسیر کدعرضه کننده نام عرضه کننده وضعیت شهر N 0 قطعات مرکب Complex parts 0 1 SP PT- PC کد قطعه کد عرضه کننده کد محصول مجموع کل قیمت Part id(f.k) Supplier id(f.k) Procut id(f.k) Sum of Price SP- PC Product PT-PC محصوالت Supplier - id(f.k) Product - id(p.k) کد محصول کدعرضه کننده N N Part id(f.k) کد قطعه Product-id(F.k) Pname نام محصول کد محصول Products-id(F.k) کد محصول No Product Price قیمت محصول تعداد محصول No-Products تعداد کاالهای مصرفی در محصول دیاگرام موجودیت - رابطه مربوط به سیستم عرضه کنندگان - قطعه 17 شکل) 1-9 ( :
1-5( داده ها و مدل های داده ها بر مبنای یک نظریه رسمی به نام مدل رابطه ای داده ها به شکل سطر و ستون جداول. با اشیا است استوار ( )object می توان ساختمان داده ها و با عملگرها رفتار را مدلسازی کرد. 1-6( مزایای استفاده از شیوه بانک اطالعاتی و وظایف سیستم مدیریت بانک اطالعاتی -1 اشتراک داده ها ( sharing ) Data : نه تنها کاربرهای موجود بلکه کاربرهای جدید نیز می توانند از همان داده های ذخیره شده به طور مشترک استفاده کنند. به عبارت دیگر می توان بدون نیاز به اضافه کردن داده های جدید به بانک اطالعاتی نیازمندی های اطالعاتی کاربرهای جدید را برطرف کرد. -2 کاهش افزونگی داده ها ( Redundancy ) Data : در سیستم های غیر بانک اطالعاتی هر سیستم کاربردی فایل های خاص خود را دارد این امر خود باعث تکرار و افزونگی قابل توجه در داده های ذخیره شده و اتالف حافظه می گردد که این فایل ها می توانند به صورت مجتمع و یکپارچه در آیند. 3- اجتناب از ناسازگاری داده ها Inconsistency( )Data : اگر افزونگی کنترل شده نباشد و داده های تکراری وجود داشته باشد ودر هنگام به روز رسانی فقط یکی از داده ها به روز رسانی شده باشد ناسازگاری در داده ها به وجود می آید. اگر ناسازگاری حذف نشده ولی تحت کنترل 18
باشد هر تغییری که بر روی یکی از داده ها اعمال شود به طور خودکار بر روی دیگری هم اعمال خواهد شد. ( به روز رسانی انتشاری یا ) propagating update. 4- اعمال حمایت های انتشاری : ) یک واحد Transaction منطقی از کار است که معموال حاوی چند عملکرد بانک اطالعاتی می تراکنش ( باشد. مانند چند عمل به روز رسانی واریز مبلغی از حساب A به حساب. B اگر کار بر بگویید که این دو عمل به هنگام به روز رسانی بخشی از یک تراکنش هستند سیستم می تواند تضمین کند که یا هر دو انجام می شوند یا هیچکدام انجام نمی شوند. 5- اعمال یکپارچگی یا جامعیت داده ها: ناسازگاری بین دو ورودی مپالی از عدم جامعیت است. کنترل متمرکز بانک اطالعاتی می تواند از بروز چنین مشکالتی جلوگیری کند. در واقع به مدیر داده ها اجازه داده می شود که محدودیت هایی را تعریف کند. این محدودیت ها هر زمان که یک عملکرد به روز رسانی صورت می گیرد کنترل و تست می گردند. جامعیت داده ها در یک بانک اطالعاتی نسبت به محیطی با فایل های اختصاصی از اهمیت بیشتری برخوردار است زیرا داده ها در سیستم بانک اطالعاتی مشترک هستند. 6- عدم هدر رفتن فضا و نیروی کار : عدم ذخیره یک قلم داده در چند جای مختلف و هدر رفتن فضای حافظه و نیروی کار 7- عدم بروز انواع ناهنجاری ها :سه نوع ناهنجاری شامل ناهنجاری های اصالح ) Insertion A. ( و درج ) Deletion A. ( حذف )Modification Anomaly( 19
Studennt ناهنجاری اصالح : Fname Lname Phone.No Ali Babaii 628090... Changing تغییر شماره تلفن دانشجو تغییر در فایل امور مالی تغییر در رکورد دانشجو امور آموزشی ضروری Propagating Modification اصالح انتشاری تغییر در پروژه های اخذ شده از دانشجو Ali 100 project 100 changing phone.no ناهنجاری درج : یعنی درج هر پروژه جدید ضروری اطالعات استاد راهنمای پروژه نیز درج شود حتی اگر قبال اطالعات استاد در پروژه های دیگر درج شده باشد خطای ورودی کاربران در درج اطالعات استاد ناساز گاری داده های استاد ناهنجاری حذف : 20
حذف رکورد یک استاد وجود رکورد های پروژه بدون استاد راهنما برای جلوگیری از ناسازگاری داده ها بایستی کلیه پروژه های با این استاد راهنما حذف شود. به طور خاص اگر یک استاد تنها 1 پروژه در اختیار دارد. با حذف این دانشجو اطالعات مربوط به استاد نیز حذف می گردد. 8- مدیریت تهیه نسخه پشتیبان و ترمیم بانک اطالعاتی ( Recovery (: Backup & با تهیه backup )هر روز( اگر روزی سیستم دچار خرابی داده ای شود با ترمیم بانک و بازسازی داده ای بانک اطالعاتی تنها اطالعات یک روز در بانک اطالعاتی از بین می رود. -9 اعمال محدودیت های امنیتی ( Security )Data : ماهیت و مفهوم تمرکز داده ها در یک سیستم بانک اطالعاتی به گونه ای است که نیازمند یک سیستم امنیتی DA DBA مناسب باشد. در جهت خواسته های میتواند محدودیتهای امنیتی یا قواعدی 1 تعریف کند تا دستیابی به داده های حساس را مثل بازیابی حذف اضافه و بروز رسانی در DB محدود نماید. 11- متعادل نمودن نیازمندیهای متضاد : می توان نمایش فیزیکی را در حافظه طراحی نمود که برای بعضی از سیستم ها و برنامه های کاربردی مهم دستیابی سریع و برای دیگر سیستم ها کم اهمیت تر دستیابی کندتر صورت گیرد. 11- اعمال استانداردها : اسنادهای قابل اعمال در نمایش داده ها استاندارد های نامگذاری و مستند سازی داده ها -12 کاهش وابستگی ساختاری Dependence( ) Structural : 21
وابستگی ساختاری در لزوم تغییر کد برنامه های مربوط به یک فایل پس از اعمال هر تغییر در ساختار فایل ( اضافه یا حذف فیلد (اطالق می گردد. -13 استقالل داده ها ( Independency :) Data مصونیت برنامه های کاربردی نسبت به تغییر روش نمایش فیزیکی و روش های دسترسی داده ها را استقالل داده گویند. هر یک از مدلهای بانک اطالعاتی از یک تجرید یا انتزاع Model( )conceptual استفاده می کنند. مثال در مدل رابطه ای از انتزاع جدول استفاده می گردد. استفاده کاربران از این جدول هیچ ربطی به نحوه ذخیره سازی داده ها ندارد. و نحوه زخیره سازی داده ها روی رسانه ها از دید کاربران پنهان می ماند. اگر تغییری در ذخیره سازی داده ها شود ( تغییر نوع دیسک ) برنامه های کاربردی هیچ تغییری نمی کنند. به این استقالل فیزیکی داده ها می گویند. اگر به جدول یک ستون اضافه شود دیدگاههای قبلی که از این جدول استفاده می کنند قابل تغییر بودن و هیچ تغییری نمی کنند و می توان دیدگاهها جدیدی از این جدول با ستون اضافه شده ایجاد کرد. به این استقالل منطقی داده ها گویند. بانک های اطالعاتی بر حسب ساختمان داده و عملیاتی که به کاربر ارائه می دهند طبقه بندی می شوند. مدل رابطه ای ) Relational Database( RDB استفاده از درخت -1 مدل سلسله مراتبی Model( )Hierarchical DB مدل شبکه ای Model( )Network DB مدل لیست معکوس Model( )Inverted List -2-3 -4 مدل های معماری بانک اطالعاتی مدلهلی قدیمی با مبنای رکوردپایه گزاری شده است. استفاده از گراف -0 مدل شئ گرا Model( )object oriented 22
مقایسه مدلهای معماری بانک اطالعاتی : 1- مدل سلسله مراتبی :)HDBM( درخت : ساختمان داده قدیمی ترین مدل DB نا مناسب برای روابط چند به چند لیست پیوندی اشاره گرها عرضه کننده Sup_id Sup_name City 1 N N ( N_1 ) مناسب ( 1_N ) مناسب N 1 N قطعه ( N_N ) نامناسب Plat_id name Color SUM P1 p2...... 23
) عمل بازیابی : نام عرضه کنندگانی که قطعه خاصی را عرضه می کنند ( مثال p2 بر روی هر عرضه کننده بایستی همه قطعات را جستجو نماییم ( o) n 2 ناهنجاری عمل درج : گره فرزند بدون پدر نمی تواند درج شود. قطعه ای که هنوز عرضه کننده ای ندارد را نمی توان درج نمود. عمل حذف : با حذف یک پدر کلید فرزندان حذف می شوند ( حذف کلید زیر شاخه های parent حذف شده ) تغییر آدرس یک عرضه کننده تغییر در کلیه آدرس های عمل بروز رسانی : عرضه کنندگان کاالی موجود 1 -نامناسب برای روابط چند به چند معایب مدل سلسله مراتبی 2 -وقت گیر بودن گزارشات بازیابی 3 -ناهنجاری های درج حذف و بروز رسانی 4 -استفاده از اشاره گر ها و وابستگی به آدرس های فیزیکی ذخیره سازی 2- مدل شبکه ای :)NDBM( ساختمان داده : گراف مناسب برای روابط چند به چند عدم وجود ناهنجاری های درج حذف و بروز رسانی معایب : پیچیدگی در طراحی و پیاده سازی مدل شبکه ای وابستگی به محیط فیزیکی به دلیل استفاده از اشاره گر ها 3- مدل رابطه ای :)RDBM( ساختمان داده : 24
جدول عدم وجود ناهنجاری های درج حذف و بروز رسانی مناسب بر پیاده سازی روابط N_1 و N_N سادگی در طراحی وپیاده سازی عدم وابستگی به محیط فیزیکی. بهترین روش برای طراحی بانک اطالعاتی روش رابطه ای می باشد. با استفاده از Objectها ساختمان داده ها را می توان مدل سازی نمود و با عملگرهاو Functionها رفتار سیستم را مدل سازی کرد. تمام رابطه های ریاضی ( تقارن- تعدی-معکوس و...(در رابطه ها وجود دارد. )دادگان ) لغت نامه داده ها Data Dictionery )فرا داده( کاتالوگ سیستم : داده در مورد داده System Catalog Meta Data : Data dictionary در مرحله طراحی بانک اطالعاتی هر گاه طراح برای مفهومی نامی بر می گزیند باید آن را در لغت نامه داده ها همراه با معنای آن و فرمت آن و... وارد کند. این اسامی شامل تمامی نامهای استفاده شده در سیستم مانند نام جدول نام شی یا صفت یا... می باشد. در بانکهای مدرن اطالعاتی نرم افزارهایی برای جستجو اسامی در لغتنامه وجود دارد. : System Catalog دارای اطالعات مربوط به حق دستیلبی افراد به داده های مختلف تاریخ ایجاد و بروزرسانی داده ها ایجاد کننده پرونده ها اندازه هر جدول یا شی و.... لغت نامه زیر مجموعه کاتالوگ سیستم است. سیستم بانک اطالعاتی بطور اتوماتیک و به کمک کاربران اطالعات موجود در کاتالوگ سیستم را همواره به روز نگهداری می کند. 25
فصل دوم معماری سیستم بانک اطالعاتی 26
سطح خارجی Conceptual Level External Level سطح مفهومی Internal Level سطح داخلی ) 2-1 معماری : ANSI-SPARC هر بانک اطالعاتی باتبعیت از یک نوع معماری طراحی می گردد. در این فصل در مورد معماری ANSI/SPARC بحث خواهد شد. معماری ANSI -SPARC ) Committee ( American National Standard Institute/Standard planning and Requirements این با اکثر مدل های بانک اطالعاتی همخوانی دارد و از مدل خاصی پیروی نمی کند. شمای این معماری سه سطحی در شکل )2-1( نشان داده شده است. User A1 User A2 User B1 User B2 User B3 End Users HL+ DSL HL+ DSL HL+ DSL HL+ DSL HL+ DSL دیدگاه خارجی B External View B دیدگاه خارجی A نگاشت خارجی - مفهومی (Mapping) Application Programer (Transformation ) دیدگاه مفهومی DBA نگاشت مفهومی داخلی DBMS دیدگاه Data داخلی فرهنگ داده ها )شبه داده ها( System Catalog شکل )2-1(: شمای معماری سه سطحی ANSI - SPARC 27
در معماری ANSI SPARC وجود دارد : تصاویر مختلفی از بانک اطالعاتی به شرح زیر )view( تصویر خارجی : دیدگاههای کاربران مختلف تصویرادراکی عام:)طرح ک یل بانک اطالعاتی بدون توجه به مدلی خاص( Ent 1 Relation Ent 2 تصویر ادراکی خاص :)طرح ک یل بانک اطالعاتی در قالب مدلی انتخابی( تصویر فیزیکی :)طرح ک یل بانک اطالعاتی روی رسانه های ذخیره سازی اطالعات( ) 2-2 سطوح معماری : ANSI SPARC ) Conceptual level( مفهومی )External level خارجی ( معماری ANSI / SPARC به سه سطح داخلی ( level ) Internal تقسیم می شود. 1- سطح داخلی : نزدیکترین سطح به حافظه یا انباره فیزیکی می باشد که سطح فیزیکی نیز نامیده می شود. به عبارت دیگر این سطح با ذخیره سازی فیزیکی داده ها سر و کار دارد. از دیدگاه چگونگی ذخیره سازی فیزیکی داده ها روی حافظه های کامپوتر های موجود در یک سیستم بانک اطالعاتی سیستم بانک اطالعاتی را بطور کلی می توان در دوگونه متفاوت در نظر گرفت که عبارتند از : 28
:) Centralized DB ( بانک اطالعاتی متمرکز ) i کلیه داده های موجود در بانک اطالعاتی روی تنها یک کامپیوتر Server( (قرار دارد و تمامی ذخیره و باز یابی و عملیات روی داده های بانک اطالعاتی از طریق همین یک Server کنترل می گردد. :) Distributed DB ( بانک اطالعاتی توزیع شده ) ii کلیه داده های موجود در بانک اطالعاتی روی چندین کامپیوتر ( Server ) توزیع شده اند.همه Server های موجود در سیستم بانک اطالعاتی از ماهیت داده ها و امکان آنها اطالع دارند. 2- سطح خارجی : نزدیکترین سطح به کاربران می باشد که سطح منطقی کاربر نیز نامیده می شود به بیان دیگر سطحی است که با روش های مشاهده داده ها توسط کاربران متفاوت سر و کار دارد. داده هایی که در یک بانک اطالعاتی وجود دارند در تمام سطوح معماری به شکل های مختلف ذخیره و نمایش داده می شوند. سطح خارجی با دیدگاه های انفرادی کاربران سر و کار دارد. هزاران دیدگاه می توان ساخت که همه اطالعات خود را از یک جا دریافت می کنند. در این الیه پنهان سازی اطالعات صورت می گیرد به عبارت. دیگر هر کاربری به همان اندازه اطالعات بده که نیاز دارد نه بیشتر امکان این وجود دارد که دید خیلی از دیدگاه ها دارای صفات مشترکی از موجودیتها باشند که این خود باعث بروز اشکال و ناهنجاری در سیستم بانک اطالعاتی می شوند. 29
3- سطح مفهومی : سطح غیر مستقیم بین دو سطح دیگر است و سطح منطقی اجتماع یا سطح منطقی نیز نامیده می شود. دردیدگاه مفهومی به داده ها به همان شکلی که هستند نگاه می شود نه به شکلی که کاربران به دلیل محدودیت های سخت افزاری و زبان های خاصی که در اختیار دارند مجبور به دیدن دیدگاه هر هستند. آنها کاربر برای خودش منحصر به فرد است و سطح مفهومی اجتماع دیدگاههای خارجی است که دقیقا خواص اجتماع ریاضی را دارد. داده های تکراری دیدگاه خارجی در دیدگاه مفهومی نمایش داده نمی شوند. در یک سیستم رابطه ای دیدگاه مفهومی قطعا رابطه ای خواهد بود. اشیاء قابل رویت در آن سطح جدول رابطه ای بوده و عملگرها نیز رابطه ای هستند. دیدگاه خارجی یا رابطه ای است یا چیزی نزدیک به آن می باشد. دیدگاه داخلی رابطه ای نیست زیرا اشیاء آن سطح تنها جداول رابطه ای ذخیره شده نیست بلکه همان نوع اشیایی است که در سطح داخلی هر نوع سیستم دیگری یافت می شود. مانند رکوردهای ذخیره شده اشاره گرها ایندکس ها... ) 2-3 زبان های برنامه نویسی بانک اطالعاتی برای برنامه نویسان کاربردی این زبان یکی از زبانهای برنامه نویسی )مثل ++C( و یا یک زبان اختصاصی که مربوط به سیستم بانک اطالعاتی مورد نظر است می باشد. برای کاربر نهایی زبان مورد نظر یا یک زبان پرس و جو است یا یک زبان با اهداف خاص مانند یک زبان فرم گرا یا منو گرا که برای نیازهای کاربران طراحی و توسط برنامه کاربردی درون خطی پشتیبانی می گردد. مسئله مهم درباره چنین زبانهایی این است که همگی آنها )Data Sub Language( شامل یک زیر زبان داده ها یا DSL می باشند. بطور کلی زبان های برنامه نویسی بانک اطالعاتی به دو د سته تقسیم می شوند : 30
: زیر زبان داده )DSL( زیر مجموعه ای از تمام زبان های مرتبط با اشیاء و عملیات بانک اطالعاتی می -1 باشد. 2- زیان میزبان یا )Host Language(HL :معموالDSL فاقددستورات کنترل واسط کاربر ایجاد حلقه ها تست شرطها و... می باشد بطوریکه این عملیات توسط HL صورت می پذیرد. هر زیر زبان داده در واقع از سه زیر زبان فرعی زیر تشکیل شده است : یا ) زیر زبان تعریف داده ها :)Data Declaration Language(DDL تعریف یا اعالن اشیا بانک i اطالعاتی را پشتیبانی می کند. زبان دستکاری داده ها یاLanguage(DML :)Data Manupulation مربوط به پردازش و ) ii دستکاری اشیا بانک اطالعاتی را پشتیبانی می کند. زبان کنترل داده ها یا (: مربوط به مدیریت مجوزهای Data Control Language( DCL ) iii دسترسی به بانک اطالعاتی است. 2-4( نگاشت های سطوح معماری بطور کلی بین سطوح معماری نگاشتهای خارجی/ مفهومی و مفهومی/ داخلی باعث تغییر شکل Transformation( ) داده های بانک اطالعاتی بین این سه سطح می شوند. این دو نگاشت در ادامه تشریح می گردند. 31
)Internal / conceptual Mapping ( نگاشت مفهومی / داخلی داده های فیزیکی موجود در سطح داخلی )حافظه( بایستی در سطح مفهومی به حالت جداول و رابطه تغییر شکل یابد. این نگاشت مشخص می کند که چگونه رکوردها و فیلدهای مفهومی در سطح داخلی نمایش داده می شوند. اگر ساختار بانک اطالعاتی ذخیره شده تغییر نماید آنگاه نگاشت مفهومی / داخلی می بایست به گونه ای تغییر پیدا کند که شمای مفهومی بدون تغییر بماند. کنترل چنین تغییراتی به عهده مدیر بانک اطالعاتی می باشد. به عبارت دیگر حفظ شوند. کنترل چنین تغییراتی می بایست تحت سطح مفهومی کنترل شوند تا استقالل داده ها )External / Conceptual Mapping( نگاشت خارجی / مفهومی در سطح مفهومی داده های موجود در جداول بایستی توسط واسط کاربر برای کاربران نهایی نمایش داده شوند و برای آنها قابل دسترسی باشند. اگر نگاشت ها دینامیک باشند یعنی گسترش پذیر باشند سیستم حالت دینامیک دارد : به عبارت دیگر کاربر می تواند هر نوع گزارشی که مورد نیاز دارد سیستم در ایجاد نماید. را استاتیک گزارشها تعریف شده و محدود می باشندو قابل گسترش نیستند. ) 2-5 وظایف مدیر بانک اطالعاتی) ) DBA بطور خالصه مدیر بانک اطالعاتی دارای وظایفی به شرح زیر می باشد : تعریف سطح مفهومی : طراحی ادراکی عام و طراحی دیاگرام موجودیت رابطه. تعریف سطح داخلی : چگونگی ذخیره اطالعات و تعریف ساختار داده ها. مرتبط بودن با کاربر : مدیر بانک اطالعاتی سیستم را تحلیل میکند و از اینکه داده های مورد نیاز کاربران قابل دسترسی در طراحی سیستم بانک اطالعاتی باشد اطمینان حاصل می کند. 32
تعریف محدودیت ها جامعیت و امنیت : وظیفه مدیر بانک اطالعاتی است که جامعیت و امنیت را ) Constraint Integration security( ) برای برنامه نویس توضیح دهد. کلید اصلی) Primary Key بطور کلی نباید در دسترس کاربر باشد و باید منحصر به فرد باشد. محدودیت هایی که مدیر بانک اطالعاتی ایجاد می کند باعث امنیت می شود. تعریف سیستم های ترمیم و پشتیبانی) ) Recovery & Backup : در صورت از کار افتادگی هر قسمت از بانک اطالعاتی )خرابی در سخت افزار یا سیستم عامل ) مدیر بانک اطالعاتی باید قادر به ترمیم و جبران داده های مورد نظر با حداقل تاخیر و کوشش باشد. برای مثال داده هایی که صدمه ندیده اند باید قابل دسترسی باشند. مدیر بانک اطالعاتی باید شمای مناسب ترمیم را تعریف و پیاده سازی نماید. می توان به روال های روبرداری )dump( بانک اطالعاتی جهت تهیه پشتیبان و بار کردن دوباره بانک اطالعاتی )reload( اشاره نمود. نظارت بر کارایی و تغییر نیازها : مدیر بانک اطالعاتی باید سیستم را طوری سازماندهی کند که بهترین کارایی را داشته باشد و مادامی که نیازمندی ها تغییر می کند دهد. تنظیم های مناسب را انجام ) 2-6 سیستم مدیریت بانک اطالعاتی : سیستم مدیریت بانک اطالعاتی یا System( )Database Management نرم افزاری است که DBMS تمام دستیابی ها را به یک بانک اطالعاتی ممکن می سازد. به طور کلی آنچه در عمل اتفاق می افتد را می توان به صورت زیر خالصه کرد: 33
1- کاربر با استفاده از بعضی زیر زبان های داده )مانند )SQL درخواست یک دسترسی را می کند. 2- سیستم مدیریت بانک اطالعاتی درخواست را دریافت و آن را تحلیل می کند. سیستم مدیریت بانک اطالعاتی به ترتیب شمای خارجی برای را آن کاربر )نسخه کامپایل شده( نگاشت -3 خارجی / مفهومی متناظر شمای ادراکی / داخلی متناظر و تعریف ساختار حافظه را مرور و بازرسی می کند. 4- سیستم مدیریت بانک اطالعاتی عملکردهای الزم را بر روی بانک اطالعاتی اجرا میکند. شکل )2-2( شمایی از یک سیستم مدیریت بانک اطالعاتی و وظایف آن داده ها باشد. سیستم مدیریت بانک اطالعاتی را نمایش می دهد. سیستم مدیریت بانک اطالعاتی بایستی به عنوان پردازنده یا کامپایلر برای دستورات زیر زبان تعریف و دستکاری همچنین پردازنده زبان تقاضا یک برنامه کاربردی درونی ( Built_in ) و ) برای پرس و جوهای پیش بینی نشده است. بهینه ساز optimizer( ) روش کار آمدی پیوستگی ( online را برای پیاده سازی پرس و جو تعیین می کند. 34
گزارشات پیش بینی نشده گزارشات پیش بینی شده درخواست های DML برنامه ریزی نشده درخواست های DML برنامه ریزی شده شماها و نگاشتهای منبع )کامپایل شده ) پردازنده DDL پردازنده DML پردازنده زبان تقاضا درخواستهای کامپایل شده شماها و نگاشتهای منبع کامپایل شده بهینه ساز درخواستهای بهینه شده مدیر زمان اجرا بانک اطالعاتی داده ها شبه داده ها /فرهنگ داده شکل )2-2( : شمای سیستم مدیریت بانک اطالعاتی 35
اجزای تشکیل دهنده سیستم مدیریت بانک اطالعاتی در زیر بطور خالصه توصیف می گردند. تعریف داده ها )DDL( : سیستم مدیریت بانک اطالعاتی باید تمام نگاشت ها و شماها را ایجاد کند. : دستکاری داده ها )DML( سیستم مدیریت بانک اطالعاتی باید قادر باشد که درخواست های بازیابی بهنگام رسانی و حذف داده ها ی موجود از بانک اطالعاتی و همچنین اضافه کردن داده ها ی جدید را به بانک اطالعاتی انجام دهد. بهینه سازی و اجرا : درخواستهای دستکاری داده ها چه از نوع برنامه ریزی شده و چه برنامه ریزی باید نشده بوسیله بهینه ساز پردازش شوند. هدف بهینه ساز تعیین یک روش کار آمد برای پیاده سازی این درخواست ها است. جامعیت و امنیت داده ها : سیستم مدیریت بانک اطالعاتی باید بر درخواست های کاربران نظارت داشته و از هر گونه تالشی که محدودیت های جامعیت و امنیت تعریف شده توسط مدیر بانک اطالعاتی را برهم می زند جلوگیری کند.این وظایف می توانند در زمان کامپایل اجرا و یا تلفیقی از هر دو انجام شوند. ترمیم و سازگاری داده ها : سیستم مدیریت بانک اطالعاتی و یا بعضی از نرم افزارهای مرتبط که معموال مدیر تراکنش یا ناظر پردازش تراکنش نامیده می شوند باید کنترل های خاصی برای ترمیم و سازگاری فراهم سازند. :) system Catalog فرهنگ داده ها ( سیستم مدیریت بانک اطالعاتی فرهنگ ایجاد باید امکان داده ها را فراهم سازد. فرهنگ داده ها را می توان به عنوان یک بانک اطالعاتی در نظر گرفت که حاوی داده هایی در مورد داده های بانک اطالعاتی است. بدیهی است که سیستم مدیریت بانک اطالعاتی باید تمام عملکردهای ارائه شده را با کارایی کارایی : هر چه بیشتر اجرا کند. 36
از دیدگاهی دیگر سیستم های بانک اطالعاتی را می توان در دو گونه متفاوت در نظر گرفت : : Client / Server Database یک سیستم بانک اطالعاتی را می توان به عنوان یک ساختار دو قسمتی ) i متشکل از یک سرویس دهنده ( )server و مجموعه ای از مشتری ها ( )Client در نظر گرفت. سرویس دهنده خود سیستم مدیریت بانک اطالعاتی است. سرویس دهنده از تمام عملکردهای اصلی سیستم مدیریت بانک اطالعاتی پشتیبانی می کند. مشتریان برنامه های کاربردی مختلفی هستند که بر روی سیستم مدیریت بانک اطالعاتی اجرا می شوند. در این معماری پردازش سری ( process ) sequential کاربرد دارد. : در این معماری هم سیستم مدیریت بانک اطالعاتی سرویس دهنده می Distributed Database ) ii باشد با این تفاوت که چندین سرویس دهنده وجود دارد و داده ها روی این سرویس دهنده ها توزیح شده سیستم مدیریت بانک اطالعاتی از وضعیت یکدیگر آگاه می باشند یک یعنی سیستم مدیریت بانک اند. parallel داده ها می داند اطالعاتی در کدام سرویس دهنده قرار دارد. در این معماری پردازش موازی) ) process کاربرد دارد. 37
فصل سوم : مقدمه ای بر بانک اطالعاتی رابطه ای 38
بانک های اطالعاتی رابطه ای یا Relational Database روابط براساس ریاضی استوار است و از سه جنبه مود بررسی قرار می گیرند : 1- جنبه ساختاری : داده های بانک اطالعاتی فقط و فقط به صورت جدول در اختیار کاربر قرار می گیرد. 2- جنبه جامعیت : ان جداول محدودیت های جامعییت خاصی را بر آورده می کنند. جامعیت در مدل رابطه ای : جامعیت دامنه ای Integrity( ) Domain : کلیه صفات در تمامی رابطه ها از نوع دامنه خود باشند. جامعیت درون رابطه ای Integrity( (: Intra _relation هر رابطه به تنهایی صحیح باشد. -1-2 عضو تکراری نداشته باشد )کلید اصلی یکسان( کلیدهایش Null نباشد ( کلید اصلیNull نباشد( 3- جامعیت ارجاع ( Integrity (: Referential کلید خارجی درست تعریف شده باشد و تهی نباشد. *وظیفه ی جامعیت های فوق با DBMS می باشد. 3- جنبه دستکاریی : عملگرهایی که برای دستکاری آن جداول دراختیار کاربر قرار دارند عملگرهایی هستند که جدول های خاصی را از جدول های دیگر استخراج می کنند. از بین این عملگرها سه عملکرد مهم هستند : - Restrict )محدودیت (: سطرهای مشخصی رااز یک جدول استخراج می کند. - :Projection )عمل تصویر (: ستون های خاصی از یک جدول را استخراج میکند. - Join )الحاق ) : دو جدول را براساس مقادیر مشترک در یک ستون مشترک به هم الحاق می کنند. 39
نکته : سیستم های رابطه ای بر منای یک تئوری به نام مدل رابطه ای داده ها Model( RDBM (می : Relational DB باشد. Student دو جدول Course و را مستقیما نمیتوان الحاق کرد. الحاق باید توسط یک رابطه انجام Student شود در الحاق دو جدول باید با هم اشتراک داشته باشند. برای دو جدول Course با و این شرط که Id درس و Id دانشجو را در رابطه قرار دهیم می توان دو جدول را الحاق کرد. نکات مهم : 1( نتیجه حاصل از هر یک از این عملگرهای رابطه ای جدول دیگری خواهد بود )خاصیت بسیتار )Closure 2( خروجی هر عمل می تواند ورودی عمل دیگری باشد. ( عبارتهای النه ای )Nested Expression 3( جدولی که فاقد رکورد باشد معتبر نیست. 4( در سیستم های رابطه ای بانک اطالعاتی به صورت جدول نگهداری می شود. تمام اطالعات موجود در بانک اطالعاتی فقط به یک صورت نمایش داده می شود به صورت مقادیری از موقعیت های ستونی از سطرهای جدول. هیچ اشاره گری وجود ندارد که جدولی را به جدول دیگر ارتباط دهد. در یک جدول کلیدهای مختلفی وجود دارد که عبارت اند از: : Super Key هر ترکیبی از صفات که خاصیت کلید داشته باشد )کلید اصلی ( یعنی زیر مجموعه ای از -1 آن هم می تواند کلید باشد نام دانشجو شماره دانشجویی شماره دانشجویی کمینه Minimal نیست. 40
* سوپر کلید مجموعه ای از یک یا چند خاصیت است که سایر خاصیتهای جدول به ان وابستگی تابعی دارد. :candidate Key -2 یک شناسه منحصر به فرد برای سطری از یک رابطه. کلید کا ندید ممکن است ساده )یک فیلد منفرد ) یا مرکب )دو ییا چند فیلد ) باشد. هر رابطه باید حداقل یک فیلد کاندید داشته باشد امارابطه ها می توانند بیش از یک کلید کاندید نیز داشته باشند چنانچه تنها یک کلید موجود باشد آنگاه به طور خودکار کلید اصلی نیز می شود. چنانچه چند کلید کاندید وجود داشته باشد طراح باید یک یا ترکیبی از آنها را به عنوان کلید اصلی معرفی کند. دارند. کلید کاندید مجموعه از از یک یا چند خاصیت است که سایر خاصیتهای جدول به آن وابستگی تابعی کامل Std# + Sname is not Candidate (bcoz) Sd# is Candidate هر ترکیبی از صفات که کلید کمینه باشد.به عبارت دیگر سوپر کلیدی است که قابل خالصه شدن نباشد. : Primary Key -3 فیلد کلیدی است که برای منحصر به فرد کردن هر سطر خاص از یک رابطه به کاربرده می شود. کلید اصلی مقدار تکراری نمی گیرد Auto number کلید اصلی مقدار Null نمی گیرد. یکی از کلیدهای کاندید است که توسط DBA انتخاب شده است. )کلید فرعی( یا )کلید ثانویه( : کلید کاندیدی است که Secondary Key Alternative Key -4 کاربردهای خاص دارد. 41
کلید اصلی : شماره دانشجویی کلید فرعی : نام و نام خانوادگی دانشجو Primary Key Primary Key * کاربردها : مرتب سازی بر حسب نام خانوادگی Foreign Key Student S # sname Course C # Cname T# Teacher T# Super Key Candidate Key S#, Sname, C #, Cname No, (S#) S#, c#, Caname Primary key s#, c# Alternative key sname, cname Foreign key T# : foreign key -0 فیلد هایی که در جدول رابط قرار می دهیم برای جدول اصلی کلید خارجی محسوب می شوند. همچنین اگر فیلدی در جدول اول کلید اصلی باشد و همچنین فیلد در جدول دوم کلید خارجی محسوب می شود. 42
نکته : تمام جداول باید کلید اصلی داشته باشند و حرکت د ربین جداول براساس کلید اصلی صورت می گیرد. تمام بازیابی ها براساس کلید اصلی صورت می گیرد. مدل رابطه ای ) RDBM (شامل اجزای زیر می باشد : )1 تعداد نامتناهی ازانواع اسکالر ( Type )scalar. 2( مولد نوع رابطه : برنامه های نوشته شده با SQL را به مدل رابطه ای تبدیل می کند د رواقع یک کامپایلر می باشد. 3( متغیرهای رابطه ای : هر کدام از جداول یک متغیر رابطه ای می باشد. I. متغیرهای رابطه ای پایه ( relavar )base : متغیرهای رابطه ای اولیه شامل کلید Entity ها وحتی Relation ها..II متغیرهای رابطه ای مشتق شده که جداول خروجی از جداول پایه ای می باشند. 4( انتساب های رابطه ای : چند داده را به یک متغیر نسبت می دهیم یعنی در یک جدول قرار می دهیم. 0( عملگرهای رابطه ای : که اصلی ترین آنها شامل محدودیت تصویر و الحاق می باشد. )نمونه های دیگر : تفاضل تقسیم حذف بروزرسانی اصالح درج(. رابطه یک اصطالح ریاضی برای جدول است. بهینه سازی : راهبری خودکار : کاربر فقط می گوید چه می خواهد به این که این کار چگونه انجام می شود کاری ندارد. 43
تصمیم گیری راجع به چگونگی اجرای راهبری خودکار به عهده بخش DBMS مهمی از می باشد که به آن بهینه ساز) Optimizer ( می گویند. به عبارت دیگر هر درخواست رابطه ای که از کاربر صادر می شود بهینه ساز وظیفه انتخاب یک راه مناسب برای پیاده سازی آن را دارد. Database : فرهنگ داده ها ( )catalog در واقع یک Database برای یک دیگر می باشد و هر System داخلی ) بانک اطالعاتی دارای یک Catalog می باشد که شامل تمام شماها )خارجی مفهومی تمام نگاشت ها تمام متغیرهای رابطه ای و ایندکس ها کلیه کاربران دیدگاه ها محدودیت های جامعیت محدودیت های امنیت و... می باشد. کاتالوگ خود توصیف ( descriptor ) self می باشد. نکته : برای گزارشگیری از خود جدول پایه استفاده نمی شود یک جدول براساس یک index ساخته می شود و ا زآن استفاده می شود. نکته : خود Catalog در داخل یک Database قرار دارد و دارای متغیرهای رابطه ای می باشد که مهترین متغیرها. table, Column, View, domain عبارتندا ز : 44
Table Primary Key Tabname Calcount Rowcount Id user... چه کسی جدول را به تعداد سطرها تعداد ستون ها نام جدول p.k وجود آورده است Column Tabname Calcount Type Fname p.k تعداد ستون ها Char 45
تراکنش ( )transaction : هر گونه برنامه ای که توسط کاربردر محیط بانک اطالعات اجرا می شود تراکنش نام دارد. تفاوت یک برنامه معمولی در محیط غیر بانکی با یک تراکنش در محیط بانکی در این است که تراکنش همواره به نظام مدیریت بانک اطالعات یعنی DBMS تسلیم می شود و این نظام در اعمال هر گونه کنترل و حتی به تعویق انداختن و ساقط کردن آن آزادی عمل دارد که هدف از این کار حفظ جامعیت و صحت بانک اطالعاتی است. Begin Transaction update account A update account B IF everything worked Fine then COMMIT * Normal End* Else ROLLBACK *Abnormal End * End IF. یک واحد منطقی از کار را تراکنش می گویند که معموال شامل چندین عمل بانک اطالعاتی است. تراکنش ها دارای خوا زیر هستند : ) ACID خواص) Atomicity )یکپارچگی ) : -1 یعنی قابل تجزیه نیستند. یعنی تراکنش ها یا به طور کامل اجرا می شوند یا اصال اجرا نمی شوند حتی اگر سیستم در وسط کار پردازش خراب شود. 46
همه یا هیچ. یعنی همه دستو رالعملهای یک تراکنش باید اجرا شود و یا هیچکدام از آنها. 1- برداشت پول از حساب مبدا مثال : انتقال پول از شهر ی به شهر دیگر دو بخش : 2- پرداخت پول به حساب مقصد. اگر عمل دوم اتفاق نیافتد مثال قطع ارتباط باید عمل اول Cancel شود. -2 Durability ( همخوانی ) : یعنی تراکنش ها پایدار هستند. یعنی وقتی یک ترکنش دستور commit را با موفقیت اجرا نمود این مسئله تضمین می شود که به هنگام رسانی آن در بانک اطالعاتی اعمال می شود حتی اگر سیستم در ادامه در هر نقطه از کار خراب شود. : Isolation -3 T2 تراکنش ها از بقیه جدا هستند یعنی به هنگام رسانی حاصل از تراکنش T1 توسط تراکنش دیگری مثل Commit commit قابل مشاهده نیست تازمانی که T1 دستور را اجرا کند. باعث می شود که به هنگام رسانی یک تراکنش برای دیگر تراکنش ها قابل رویت شود. بر طبق این خاصیت اثر تراکنش های همروند روی یکدیگر چنان است که همروندی آنها کنترل می شود تا اثر مخربی نداشته باشد. که وظیفه این کنترل به عهده واحد کنترل همروندی Concurrency Control می باشد. 47
مثال : رزواسیون بلیط هواپیما پردازش سری Sequential Transaction T1 T2 2 6 Time(Sec) ( Consistency همخوانی ) : -0 هر تراکنشی باید در تمامی قوانین جامعیت بانک اطالعاتی را رعاعت کند. مثال در برنامه انتقال پول اگر مبلغ برداشت شده با مبلغ واریز شده به حساب دیگر برابر نباشد تراکنش غلط است. هر تراکنش اگر به تنهایی اجرا شود بانک اطالعاتی را از حالتی صحیح به حالت صحیح دیگری منتقل کند. T1 : Account(A) - برداشت 1000$ : M T2 : Account(B) + T1 : Account(A) - برداشت 1000$ : M T2 : Account(B) + Begin Transaction Transfer Update Account (A); Update Account (B) ; End; مثال : Transfer مالی If everything is fine then Account (A)- 1000$ Account (B) +1000$ Else commit Roll back; End if; (M) (M) 48
اصطالحات :(Terminology) : Tupple به سطرها یا رکودهای یک relation )جدول (گفته می شود. * مجموع همه tupple ها را در یک جدول ( )relation بدنه Body می گویند. :Cardinality به تعداد Tupple های یک رابطه گفته می شود. * * :Attribute هر کدام از ستون ها یا فیلد ها را صفت می گویند. مجموع خاصیتهای یک جدول ( )relation را مجموعه عنوان می گویند( Header ). * Degree : مجموع صفات یک رابطه را درجه می گویند. * دامنه : ( )Domain : دامنه مجموعه ای از مقادیر معتبر برای هر نوع داده است. دامنه غیر از اینکه مقادیر داده را مشخص می کند نوع عملگرهایی را که برنامه اجازه دارد روی داده ها اعمال کند را نیز مشخص می کند. فرضا دو رشته را می توان الحاق ( )concatenation کرد ولی نمی توان ضرب کرد. * وابستگی تابعی ( Dependence )Functional : در یک جدول خاصیت B به خاصیت A وابستگی تابعی دارد اگر به ازای هر مقدار برای خاصیت A حداکثر یک A تعیین کنندهB نامیده می شود. FD مقدار برای خاصیت B وجود داشته باشد )B A( در اینصورت Std# FD FD Name name,major major مثال : 49
* وابستگی تابعی کامل) Dependence :) Full Functional در یک جدول صفت B به صفت A وابستگی تابعی کامل دارد A به صفت B وابستگی تابعی داشته باشد.به عبارت دیگر صفت A به تمامی صفات B صفت اگر A) FFD (B وابستگی تابعی کامل دارد اگر اوال صفت B به صفت A وابستگی تابعی داشته باشد ثانیا صفت B به هیچ جزئی از صفت A وابستگی تابعی نداشته باشد. مثال : Std# FFD name Std#,name FFD major Name,major FFD std# وابستگی جزئی عدم وابستگی تابعی FFD Std# major عدم وابستگی تابعی کامل وابستگی تابعی Partial Dependence :semantic عملگرهای عملگرهای semantic یا معنا دار عملگرهای هستند که برای هر نوع داده معنا دار باشند. مقادیر در RDB دو نوع می باشند : 1( مقادیر اسکالر : مقادیر اسکالر مقادیری هستند که اجزای آن توسط کاربر قابل مشاهده نیست. 2( مقادیر غیر اسکالر : مقادیری است که اجزای ان برای کاربر قابل مشاهده می باشد. : RDB خواص رابطه ها در 50
1( tuppleها فاقد تکرار هستند. Tupple ها فاقد ترکیب هستند. )2 3( صفات )ستونها( فاقد ترتیب هستند. 4( هر Tupple برای هر صفت دقیقا یک مقدار دارد. این خاصیت از تعریف Tupple ها نتیجه می شود : یک Tupple مجموعه ای از n جزء یا جفت های مرتب می باشد رابطه ای که دارای این خاصیت باشد می گوییم نرمال شده است و به آن شکل اول نرمال می گویند. (1 NF) نکته : هر صفت میتواند خود یک رابطه باشد. برای باال بردن سرعت از این روش استفاده می شود. X 1 Y1 Z 1 X 1 Y 2 Z 2 Relation 51
Entity Relation Entity Supplier عرضه کننده Sp Parts قطعات Sid (P.K) Sname Status City Sid (p.k) Pid (p.k) Qty Pid (p.k) Pname Color Weight City 52
SP 3 Parts #Sid #Pid Qty 2 S1 P1 905 S1 P2 20 S1 P3 - S1 P4 - S2 P1 - #Pid Sname Color Weight City Sqty P1 - RED 100 P2 - Yelow 20 P3 - - 80 P4 - - 50 P5 - - 75 P6 - - 40 S2 P2 - S2 P3 - S2 P4 - S3 P1 - S3 P2 - S4 P3 - #Sid Sname Status City Sqty #pid Qty Supplier S1-100 100 P1. 1 S2-80 20 P2. S3-120 80 P3. S4-65 50 S5-87 75 53
بانک اطالعاتی مرتبط به دانشگاه : مثال :جداول بانک اطالعاتی دانشگاه Stud(s#,sname,city,avg,clg#) دانشجو Prof(pname,office,esp,degree,clg#) استاد Crs(c#,cname,unit,clg#) درس Sec(sec#,c#,s#,term,pname,score) گروه درسی کلید اصلی: بخاطر اینکه امکان دارد دانشجویی دو ترم درسی را گرفته باشد)حتی شاید نمره یکسانی در هر دو ترم داشته باشد(کلید اصلی با ترم به صورت ترکیبی می آید. Clg(clg#,clgname,ciy,pnme) دانشکده 54
فصل چهارم جبر رابطه ای 55
جبر رابطه ای مجموعه ای از عملگرهای رابطه ای به عنوان عملگر) Operator ( و رابطه ها به عنوان می باشد ویک رابطه را به عنوان نتیجه بر می گرداند. در جبر رابطه ای عملوندها )Operand( ورودی و خروجی کلیه عملگرها )عملوندها( از نوع جدول است. R1 Operator R2 R3 جبر رابطه ای مشتمل بر دو دسته عملگرهای رابطه ای به صوری زیر می باشد: 1- عملگرهای مجموعه ای : شامل عملگرهای اجتماع )Union( اشتراک )Intersect( تفاضل )Minus( ضرب دکارتی )Times( تقسیم )Divide( والحاق (.)Join( روی چند عملوند می تواند انجام شود.( 2- عملگرهای رابطه ای : شامل عملگرهای محدودیت )Restrict( تصویر )Project( و نامگذاری )Rename( ( روی یک عملوند می تواند انجام شود(. دسته بندی جامع و کلی از عملگرهای رابطه ای : σ محدودیت ( Restrict ) 1- عملگرهای ساده : تصویر )Project( Extend بسط )Extend( Summarize Group خالصه سازی )Summarize( گروه بندی )Group( 56
اجتماع ( Union ) 2- عملگرهای مجموعه ای : اشتراک )Intersect( تفاضل )Minus( 3- عملگرهای پیوند : X ضرب دکارتی )Times( θ پیوند شرطی ( join )θ - پیوند طبیعی join( )Natural نیم پیوند join( )Semi - 4- عملگرهای خاص : p نامگذاری )Rename( جایگزینی تقسیم )Divide( عملگرهای اصلی و اضافی : π σ عملگرهای اصلی : p θ عملگرهای اضافی : 57
اجتماع )Union( : اجتماع در جبر رابطه ای اجتماع ریاضیات معمولی نمی باشد چرا که الزم است دو رابطه ورودی همگن باشند. مثال بین رابطه های دانشجو و درس و یا رابطه های قطعات و عرضه کنندگان اجتماع صورت نمی پذیرد. R1 UNION R2 R3 R1 R2 R3 همگن R2 وR1 R1 Union R2 زابطه ای از نوع می باشد بطوریکه بدنه R3 حاوی تمام رکوردهایی می باشد که در رابطه R1 یا در رابطه R2 باشد. Union خواص جابجایی و شرکت پذیری دارد. R1 R2 = R2 R1 R1 ( R2 R3 ) = ( R1 R2 ) R3 : اشتراک حاوی تمام رکوردهایی است که هم در رابطه R1 باشد و هم در )Intersect( اشتراک رابطه. R2 در اشتراک هم رابطه ها باید همگن باشند. اشتراک خواص جابجایی و شرکت پذیری دارد. R1 INTERSECT R2 R3 همگن R1 R2 R3 باشد ولی در رابطه R2 تفاضل حاوی تمام رکوردهایی می باشد که در رابطه R1 : )Minus( تفاضل نباشد. R1 وR2 باید همگن باشند. 58
R1 MINUS R2 R3 همگن R1 R2 R3 تفاضل خواص جابجایی و شرکت پذیری ندارد. R1 - R2 R2 - R1 R1 (R2 R3 ) (R1 R2 ) - R3 ضرب دکارتی )Times( : ضرب دکارتی دو رابطه مجموعه ای از جفت های چندتایی )یا همان رکورد ) می باشد. رابطه حاصل از ضرب دکارتی دو رابطه متشکل از تمام صفاتی است که از هر دو رابطه ورودی گرفته شده است. R1 R2 R3 R1 TIMES R2 R3 نکته : در ضرب دکارتی به هیچ عنوان نباید صفت هم نام و مشترک در رابطه R1,R2 وجود داشته باشد ولی عمل الحاق دو جدول بر اساس یک فیلد مشترک می باشد. رابطه حاصل از R1 TIMES R2 دوم در R2 می باشد. رابطه ای است که شامل رکوردهایی است که رکورد اول در R1 و رکورد TIMES شرط همگن بودن را ندارد.شکل )4-1( ضرب دکارتی دو رابطه ناهمگن را نشان می دهد همانطور که مشاهده می شود درجه رابطه های اولیه 1 می باشد و درجه رابطه حاصلضرب درجه 2 می باشد. 59
a X a B X Y Z a a b b b Y Z X Y Z شکل )4-1(: ضرب دکارتی دو رابطه بطور کلی در حاصلضرب دو رابطهR2 و R1 خواهیم داشت : = تعداد صفات R1 تعداد رکوردها n R3 + β تعداد صفات تعداد R2 = تعداد β رکوردها n.m صفات تعداد رکوردها m R1 Cardinality (R1) = n Degree (R1) = R2 Cardinality (R2) = m Degree (R2) = β R1 x R2 = R3 Cardinality (R3) = m* n Degree (R3) = + β 60
محدودیت )Restrict( : در عمل محدودیت می توانیم چندین شرط داشته باشیم. این شروط باید در مورد یک رابطه باشد. محدودیت انتخاب یک یا چند شرط است. مثال رکورد دانشجویانی که سال ورودی آنها 95 باشد. <Relation name> where <condition> R3 σ (R) Condition یعنی انتخاب از رابطه R با شرط نکته : سه رابطه زیر هم ارز می باشند. 1 σ ( R) (σ (R) ) (σ (R) ) C 1 &C 2 C 1 C 2 2 σ (R) (σ (R) ) (σ (R) ) C 1 &C 2 C 1 C 2 3 σ (R) ( σ (R) ) NOT C C تصویر )Project( : انتخاب یک یا چند ستون یا صفت. <Relation name> [attribute 1,, attribute n ] π attr 1,, attr n (R) R3 61
اعمال جابجایی و شرکت پذیری در project معنا یی ندارد.صفاتی که نوشته می شوند فقط یک بار باید تکرار شوند.. تصویر همانی : تصویری است که شامل تمام صفات یک جدول باشد که در واقع خود جدول می باشد تصویر خالی : تصویری است که صفتی نداشته باشد. فرض می کنیم بانک اطالعاتی قطعه-عرضه کننده دارای رابطه های S p Sp به شرح زیر باشد : S ( s#, sname, status, city ) P ( p#, pname, color, weight, city ) SP ( s#, p#, Qty ) مثال 1 تمامی مشخصات کلیه قطعات را پیدا کنید عمل project و عمل restrict نداریم چون از کلیه سطرها کلیه ستون های آن را می خواهیم پس جواب فقط p می باشد. - شماره و نام کلیه قطعات را پیدا کنید مثال 2 p[pname] فقط عمل project داریم. π (p) P#,pname مثال 3 نام و وزن قطعاتی که دارای رنگ آبی هستند را پیدا کنید 62
همیشه ابتدا عمل restrict داریم بعد عمل. project ((p where color = blue )[pname,weight] π ( σ (p) ) Pname, weight Color= blue مثال 4 شماره و نام عرضه کنندگانی را مشخص کنید که دارای وضعیت بیش از 155 و در شهر تهران واقع هستند } sname { s#, مجهول } Tehran { status > 155 & city = معلوم چون هر دو از جدول S SP P در کل مثالهااست پس همگن است. ((( S where status >= 100 ) intersect ( S where city = Tehran )) [ all but status ] π ( σ (S) ) s#,sname, city status >= 100 city = tehran معلوم مثال - 5 نام قطعاتی که در شهر تهران مورد استفاده قرار می گیرند و دارای رنگ قرمز یا آبی هستند را مشخص کنید { city = Tehran & color = blue or red } از جدول p باید مشخص کنیم. } pname { مجهول π ( ( ( σ p) ( σ p ) ) (σ p)) pname city = Tehran color = blue color = red ( ( P where city = Tehran ) intersect ( ( P where color = blue ) union ( P where color = red ) ) ) [ pname ] 63